package com.nave.segundaguerra.servidorecliente.cliente;

import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Point;
import android.graphics.PointF;
import android.util.Log;
import android.widget.RelativeLayout;

import com.nave.segundaguerra.game.CalculoImagem;
import com.nave.segundaguerra.servidorecliente.util.ActivityUtil;
import com.nave.segundaguerra.servidorecliente.util.Const;
import com.nave.segundaguerra.servidorecliente.util.ImageLibrary;
import com.nave.segundaguerra.servidorecliente.util.Protocolo;



public class GeneralCliente extends PlayerCliente{
	 private Bitmap meuBotao;
	 private PointF posBotao = new PointF(100,100);
	 private int larguraDaTela;
	 private int alturaDaTela;
	 
	public GeneralCliente(String nome, Point position) {
		super(nome, position, "General");
		//Coloquei 'Soldado' para teste apenas. por: Nuno
	}
	
	public Bitmap getBotao(){
		return this.meuBotao;
	}
	public PointF getPosBotao(){
		return this.posBotao;
	}
	@Override
	public void CarregarImagem(int larguraTela, int alturaTela){
		this.setImage(ImageLibrary.getInstance().getImage("Soldado"));
		this.larguraDaTela = larguraTela;
		this.alturaDaTela = alturaTela;
		this.meuBotao = ImageLibrary.getInstance().getImage("ZoomGeneral");
		this.meuBotao = CalculoImagem.getInstance().RedimensionarImagem(this.meuBotao, (8 * alturaTela) / 100, (8 * larguraTela) / 100);
		this.posBotao = new PointF(larguraTela / 1.1f, alturaTela / 7);
	}
	
	@Override
	public void sendTiro(DadosDoCliente dadosCliente, Point toque){
		dadosCliente.getCliente().Send(Protocolo.PROTOCOL_ITEM + "," + "MunicaoArma" + "," + toque.x + "," + toque.y);
		Log.i(Const.TAG,"Entrou no general.");
	}
	
	@Override
	public void sendPos(Point pos){
		if(!this.telaCheia){
			this.getDadosCliente().sendMove(pos.x,pos.y);
		}
	}
	@Override
	public void draw(Canvas canvas){
		if(!this.verificarTelaCheia()){
			canvas.drawBitmap(meuBotao, posBotao.x, posBotao.y, paint);
		}
	}
	
	@Override
	public void verificarZoom(float x, float y, int altura, int largura){
				if(x >= posBotao.x && x < ( posBotao.x + meuBotao.getWidth()) && 
				   y >= posBotao.y && y < ( posBotao.y + meuBotao.getHeight())){
					Log.i("ACERTOU !", "Acertei a imagem haha");
					Log.i("ACERTOU !", "x: " + largura + " y: " + altura);
					if(!this.telaCheia){
					MapaCliente.getInstance().setImage(altura, largura);
					this.telaCheia = true;
					}
					else{
						MapaCliente.getInstance().setImage(ImageLibrary.getInstance().getImage("Cenario").getHeight(),ImageLibrary.getInstance().getImage("Cenario").getWidth());
						this.telaCheia = false;
					}
				}
	}
	@Override
	public void dirViewPort(Point pnt1, Point pnt2, Point tamCanvas, RelativeLayout container){
		this.plusScrollX = pnt1.x - pnt2.x;
		this.plusScrollY = pnt1.y - pnt2.y;
		
		if (!((container.getScrollX() + this.getScrollX()) < 0)) {
			if (container.getScrollX() + ActivityUtil.getDisplayWidth()
					+ this.getScrollX() < tamCanvas.x) {
				container.scrollBy(this.getScrollX(), 0);
			}
		}

		if (!((container.getScrollY() + this.getScrollY()) < 0)) {
			if (container.getScrollY() + ActivityUtil.getDisplayHeight()
					+ this.getScrollY() < tamCanvas.y) {
				container.scrollBy(0, this.getScrollY());
			}
		}
	}
}
